package com.tuling.mall.ribbondemo.config;

import com.alibaba.cloud.nacos.ribbon.NacosRule;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 指定负载均衡策略-全局配置
 */
@Configuration
public class RibbonConfig {
    @Bean
    public IRule ribbonRule() {
        /**
         * 指定使用Nacos提供的负载均衡策略（优先调用同一集群（集群名字都是cluster-name: SH，在配置文件中配置）的实例，
         * 基于随机权重，主要是权重）， 这里测试貌似没成功，并没有一直调用同一集群的微服务。
         * mall-user  v1--- mall-order v1  微服务的版本号对应
         * mall-user  v2--- mall-order v2  微服务的版本号对应
         * 想要自定义上面这种匹配规则，需要去了解一下NacosRule类的源码中的choose方法，
         * 再自定义一个类去extends AbstractLoadBalancerRule ，重写choose方法即可
         */
        return new NacosRule();
        /**
         * 还有 RandomRule   RetryRule  RoundRobinRule AvailabilityFilteringRule BestAvailableRule
         * WeightedResponseTimeRule ZoneAvoidanceRule等这几个
         */
    }
}
